Flutterまわりのメモ


概要

UIまわりちょっとやる



インストール

このへんからSDKを入れる

https://flutter.dev/docs/get-started/install


flutter/binにパスを通すとflutter コマンドが使えるようになる。

flutter make app_name でappが作られ、flutter runでprojectがビルド、実行される。



WidgetとState

~WidgetとState<T>型 があり、

Widgetで画面のレイアウト情報やカラーなどviewの見た目を、

State<T>でWidgetに対して保持するデータを扱う。


State<T>に入るT型はWidget系をとっていて、

Widgetを生成する際、Widgetの型を持つStateが探され、更新が走る、、

とかをやってそう。


-> StatefulWidgetにはState<T>を拡張した型を返すcreateState関数があり、

Widgetを生成 -> 内部でcreateStateが叩かれる -> State<T>のインスタンスが生成される、ってだけだねこれ。


State<T>はStatefulWidgetに紐づいて生成されるのがわかった。



これはなんかどういうツールチェインになっているかをみてみるべきか?

本買ったので読んでみる



正直FlutterのUIそれ自体には魅力を感じなくなってきた

これはSkia(OpenGL、Vulkan、ほかを抽象化したレイヤー)を通じて何を描画するかをDartで書いてあるだけのプラットフォームだ。

欲しかったレベルの抽象化をしていない。


ただ、プラットフォーム固有の機能を使うために、プラグインを作って呼び出せる機能があるっぽい。

FlutterUI内に特にPf Viewを表示する機能があると。なるほど?どうやってるんだそれ。

-> VirtualDisplayとHybridCompositionの2種があり、

VDは単純にサーフェスを提供してそこに描画させる、という感じだった。

描画結果を最終的にFlutter側で合成してレンダリングする形で行っており、

パフォーマンスは出るがUI操作をいい感じに追うのは無理。

ちなみに古い手法。


HCはFlutterとOSそれぞれで描画し、描画結果を組み合わせている、

つまりOSに画面の一定範囲を描かせている。

Viewという言葉を使わず、RenderObjectとかを使っているのちょっと面白い

Viewって言うとどうしても見た目になってしまうんだけど、描画対象の話をするときはこういう語彙の方がいい気がする。